package com.fit.spring.boot.mail.service;

import com.fit.spring.boot.mail.service.impl.MailServiceImpl;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

/**
 * @describe: 邮件服务
 * @author: hcl
 * @date: 2019/3/11 20:47
 */
public interface MailService {

    /**
     * @describe:
     * @author: hcl
     * @date: 2019/3/11 21:17
     * @param subject：邮件主题，即邮件的邮件名称(不可以为空)
     * @param content：邮件内容 (不可以为空)
     * @param targetEail：需要发送的人(不可以为空)
     * @param ccPeoples：需要抄送的人(可以为空)
     * @param bccPeoples：需要密送的人(可以为空)
     * @param attachments：需要附带的附件，key=文件名,value=文件输入流(可以为空)
     * @return void
     */
    void sendMail(String subject,
                  String content,
                  List<String> targetEail,
                  List<String> ccPeoples,
                  List<String> bccPeoples,
                  List<MailServiceImpl.AttachmentResource> attachments);


    /**
     * 可以用来发送带有图片的HTML模板邮件
     *
     * @param subject：邮件主题(不可以为空)
     * @param targetEail：收件人(不可以为空)
     * @param ccPeoples：抄送人(可以为空)
     * @param bccPeoples：暗送人(可以为空)
     * @param attachments：附件(可以为空)
     * @param template：模板对象(不可以为空)
     * @param context：模板解析需要的数据(可以为空)
     * @param imageResources：图片资源的资源对象(可以为空)
     */
    void sendHtmlTemplateMail(String subject,
                              List<String> targetEail,
                              List<String> ccPeoples,
                              List<String> bccPeoples,
                              List<MailServiceImpl.AttachmentResource> attachments,
                              Template template,
                              VelocityContext context,
                              List<MailServiceImpl.ImageResource> imageResources);

    /**
     * 可以用来发送带有图片的HTML模板邮件
     *
     * @param subject：邮件主题(不可以为空)
     * @param targetEail：收件人(不可以为空)
     * @param ccPeoples：抄送人(可以为空)
     * @param bccPeoples：暗送人(可以为空)
     * @param attachments：附件(可以为空)
     * @param templateStr：字符串模板(不可以为空)
     * @param context：模板解析需要的数据(可以为空)
     * @param imageResources：图片资源的资源对象(可以为空)
     */
    void sendHtmlTemplateMail(String subject,
                              List<String> targetEail,
                              List<String> ccPeoples,
                              List<String> bccPeoples,
                              List<MailServiceImpl.AttachmentResource> attachments,
                              String templateStr,
                              VelocityContext context,
                              List<MailServiceImpl.ImageResource> imageResources);

}
